package cn.bonoon.kernel.annotations;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

/**
 * <pre>
 * 数组的分隔符
 * 一般用于数据库实体为字符串数据，普通实体为数组或集合，当把数组或集合的数据转为字符串时，
 * 不同元素之间的分隔符，数组或集合里数据存放的类型可以是任意的，但都会被转成字符串格式进行
 * 存储，所以在从数据库实体读取值的时候，如果无法原来对象的，则无法进行值之间的转换；这里可
 * 以使用{@link ObjectClass}属性进行指定需要转成的对象，使用该对象是有限制条件的，就是该对象必须有一
 * 个能接收一个字符串的构造函数，否则将无法转值；如果为对象需要重写该对象的<code>toString()</code>方法，
 * 转换器把该对象读成字符串，是通过调用该对象的<code>toString()</code>来完成了。
 * 
 * 数据存储的格式是以分隔符开始，并且不同元素之间也使用分隔符分隔开，结束也以分隔符结束
 * 
 * 注意：如果元素的类型为字符串，或对象返回的值也是字符串，则不会检测字符串里的字符是否包括
 * 分隔符，如果有包含了分隔符的，则组成字符串后，也被当成分隔符来用，以后再考虑使用替换分隔
 * 符的方案，如果这个功能不重要，或能简单的通过其它方式解决的，就不添加替换方案
 * 
 * 以后再考虑是否需要指定向对象set值和从对象get值的方法，目前是使用构造函数和<code>toString()</code>方法
 * </pre>
 * @author jackson
 *
 */
@Target(FIELD)
@Retention(RUNTIME)
public @interface ArraySeparator {
	/**
	 * 定义字符串的分隔符
	 * @return
	 */
	String value();// default "|";
	/**
	 * 对象的类型
	 * @return
	 */
//	Class<?> type() default Object.class;
}
